package com.xiaoxin.nmzp.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.NmzpCompany;
import com.ruoyi.system.mapper.NmzpCompanyMapper;
import com.ruoyi.system.service.ISysUserService;
import com.xiaoxin.nmzp.domain.NmzpJob;
import com.xiaoxin.nmzp.mapper.NmzpJobMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xiaoxin.nmzp.service.INmzpCompanyService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 公司信息Service业务层处理
 *
 * @author xiaoxin
 * @date 2024-10-18
 */
@Service
public class NmzpCompanyServiceImpl implements INmzpCompanyService {
    @Autowired
    private NmzpCompanyMapper nmzpCompanyMapper;
    @Autowired
    private ISysUserService syetemUserService;
    @Autowired
    private NmzpJobMapper nmzpJobMapper;


    /**
     * 查询公司信息
     *
     * @param companyId 公司信息主键
     * @return 公司信息
     */
    @Override
    public NmzpCompany selectNmzpCompanyByCompanyId(Long companyId) {
        NmzpCompany nmzpCompany = nmzpCompanyMapper.selectById(companyId);
        String serverUrl = "http://localhost:8080";

        nmzpCompany.setLicence(serverUrl+nmzpCompany.getLicence());
        return nmzpCompany;
        // nmzpCompanyMapper.selectNmzpCompanyByCompanyId(companyId);
    }

    /**
     * 查询公司信息列表
     *
     * @param nmzpCompany 公司信息
     * @return 公司信息
     */
    @Override
    public List<NmzpCompany> selectNmzpCompanyList(NmzpCompany nmzpCompany) {
        Long userId = SecurityUtils.getUserId();
        SysUser sysUser = syetemUserService.selectUserById(userId);
        List<SysRole> roles = sysUser.getRoles();
        boolean flag = false;
        for (SysRole role : roles) {
            if (role.getRoleKey().equals("admin")) {
                flag = true;
                break;
            }
        }
        if (!flag) {
            nmzpCompany.setUserId(userId);
        }
        return nmzpCompanyMapper.selectNmzpCompanyList(nmzpCompany);
    }

    /**
     * 新增公司信息
     *
     * @param nmzpCompany 公司信息
     * @return 结果
     */
    @Override
    public int insertNmzpCompany(NmzpCompany nmzpCompany) {
        return nmzpCompanyMapper.insertNmzpCompany(nmzpCompany);
    }

    /**
     * 修改公司信息
     *
     * @param nmzpCompany 公司信息
     * @return 结果
     */
    @Override
    @Transactional
    public int updateNmzpCompany(NmzpCompany nmzpCompany) {
        //公司信息修改，该公司的所有岗位也处于待审核状态
        //根据公司id修改所有岗位状态
        UpdateWrapper<NmzpJob> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("company_id", nmzpCompany.getCompanyId());
        updateWrapper.set("status", 0);
        nmzpJobMapper.update(null, updateWrapper);
        nmzpCompany.setStatus(0L);
        nmzpCompany.setLicence(null);
        return nmzpCompanyMapper.updateById(nmzpCompany);
    }

    /**
     * 批量删除公司信息
     *
     * @param companyIds 需要删除的公司信息主键
     * @return 结果
     */
    @Override
    public int deleteNmzpCompanyByCompanyIds(Long[] companyIds) {
        return nmzpCompanyMapper.deleteNmzpCompanyByCompanyIds(companyIds);
    }

    /**
     * 删除公司信息信息
     *
     * @param companyId 公司信息主键
     * @return 结果
     */
    @Override
    public int deleteNmzpCompanyByCompanyId(Long companyId) {
        return nmzpCompanyMapper.deleteNmzpCompanyByCompanyId(companyId);
    }


    /**
     * 公司信息审核
     *
     * @param nmzpCompany
     * @return
     */
    public int examine(NmzpCompany nmzpCompany) {
        UpdateWrapper<NmzpCompany> updateWrapper = new UpdateWrapper<>();
        //根据公司id修改状态
        updateWrapper.eq("company_id", nmzpCompany.getCompanyId());
        updateWrapper.set("status", nmzpCompany.getStatus());
        return nmzpCompanyMapper.update(null, updateWrapper);
    }


    /**
     * 修改营业执照
     *
     * @param licence
     * @return
     */
    public int update(String licence) {
        Long userId = SecurityUtils.getUserId();
        UpdateWrapper<NmzpCompany> nmzpCompanyUpdateWrapper = new UpdateWrapper<>();
        nmzpCompanyUpdateWrapper.eq("user_id", userId);
        nmzpCompanyUpdateWrapper.set("licence", licence);
        return nmzpCompanyMapper.update(null, nmzpCompanyUpdateWrapper);
    }

}
